import { AxiosError } from 'axios';
import { showToast, showConfirmDialog } from 'vant';
export const errorToast = (msg: string) => {
	showToast({
		message: msg,
		wordBreak: 'break-all'
	});
};

/**
 * 业务错误处理
 * @param result 返回数据
 * @param errTip 是否展示错误提示（例如登录页面自定义错误提示）
 */
export function responseHandler(result: { code: string; msg: string }, errTip = true) {
	switch (result.code) {
		// 登录失效
		case 'error_login_denied':
			console.log('登录失效');
			showConfirmDialog({
				title: '温馨提示',
				message: result.msg
			}).then(() => {
			});
			break;
		default:
			if (errTip && result.msg) {
				errorToast(result.msg);
			}
	}
}

/**
 * http请求错误处理
 * @param result 返回数据
 * @param errTip 是否展示错误提示（例如登录页面自定义错误提示）
 */
export const responseErrorHandler = (error: AxiosError, errTip = true) => {
	console.log(error);
	switch (error?.response?.status) {
		case 400:
			error.message = '错误请求';
			break;
		case 401:
			error.message = '未授权，请重新登录';
			break;
		case 403:
			error.message = '拒绝访问';
			break;
		case 404:
			error.message = '请求错误,未找到该资源';
			break;
		case 405:
			error.message = '请求方法未允许';
			break;
		case 408:
			error.message = '请求超时';
			break;
		case 500:
			error.message = '服务器端出错';
			break;
		case 501:
			error.message = '网络未实现';
			break;
		case 502:
			error.message = '网络错误';
			break;
		case 503:
			error.message = '服务不可用';
			break;
		case 504:
			error.message = '网络超时';
			break;
		case 505:
			error.message = 'http版本不支持该请求';
			break;
		default:
			error.message = '连接错误';
	}
	if (errTip) {
		errorToast(error.message);
	}
	return error.message;
};
